package base.day06;

/**
 * 描述：
 *      布隆过滤器：给定一个值，判定它是否存在在某个集合内，如果存在返回true，否则返回false
 *      布隆过滤器是将输入的值进过一系列hash算法对应到空间中的多个bit位，如果这些bit都为1，那么判定这个值存在，返回true。
 *
 *      布隆过滤器是存在误判的，它的误判类型是“可能并不存在，但是还是返回true“
 *      布隆过滤器的bit数组开多大，由样本量和预期失误率来决定
 *      hash函数的个数：
 *
 *
 *
 * @author hl
 * @version 1.0
 * @date 2020/10/28 16:55
 */
public class BloomFilter {
    public static void main(String[] args) {
        int[] arr = new int[1000];//布隆过滤器的数组空间：4 * 8 * 1000 = 32000 (bit)

        int index = 3000;//假设经过hash函数计算后的值对应到3000bit位上。

        int intIndex = index / 32;

        int bitIndex = index % 32;

        arr[intIndex] = (arr[intIndex] | 1 << bitIndex);//将int位置上对应的bit涂黑
    }

}
